﻿using SW2A311_Lib;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization;

namespace Server
{
    /// <summary>
    /// Klasse der styre initialiseringen af Users fra en text fil.
    /// </summary>
    class DataHandler
    {
        internal List<User> Users { get; private set; }
        internal string Filename { get; private set; }

        /// <summary>
        /// Constrctor. Læser brugere fra filen angivet som input
        /// </summary>
        /// <param name="fileNameIn">File User skal læses fra</param>
        public DataHandler(string fileNameIn)
        {
            Filename = fileNameIn;
            ProjectCollection.Instance.ReadDatabaseFromFile();
            Users = new List<User>();
            initUserDataFromFile();
        }

        /// <summary>
        /// Læser User fra fil. Der bliver tilføjet en admin, med værdierne:
        /// Brugernavn: Admin
        /// Password: 123456
        /// Hvis filen ikke eksistere bliv admin tilføjet som den eneste
        /// </summary>
        private void initUserDataFromFile()
        {
            ObjectToFile serializer = new ObjectToFile();
            try
            {
                Users = serializer.DeSerializeObject<List<User>>(Filename);
                Users.Add(new User("Admin", "123456"));
            }
            catch (FileNotFoundException)
            {
                Users.Add(new User("Admin", "123456"));
            }
            catch (SerializationException)
            {
                Users.Add(new User("Admin", "123456"));
            }
        }

        /// <summary>
        /// Skriver User-listen til fil, hvis navn blev  specificeret i contructoren
        /// </summary>
        public void WriteUserDatabaseToFile()
        {
            ObjectToFile serializer = new ObjectToFile();
            serializer.SerializeObject<List<User>>(Filename, Users);
        }

    }
}
